package ar.com.binarit

import java.math.BigDecimal;
import java.util.Date;

import org.codehaus.jettison.json.JSONObject

import ar.com.binarit.entities.EstadoPago;
import ar.com.binarit.entities.PagoUsuario
import ar.com.binarit.entities.TipoPago;
import ar.com.binarit.entities.Viaje;

import groovyx.net.http.*
import groovyx.net.http.ContentType.*
import groovyx.net.http.Method.*


class MercadoPagoController extends AbstractController{
	
	def mercadoPagoService

	/*****
	 * 
	 * Index:
	 * Metodo al que accede la notificacion del pago de mercado libre. 
	 * Se responde con un status 200 avisando que se escucho. 
	 * MercadoPagoFilters, luego, procesa el pago con el id que llego como parametro
	 * 	
	*****/	
    def index() { 
		log.warn "parece que entro a las notificaciones de pago MP: ${params}"
		response.status = 200
		render "OK"
	}
	
	def obtenerPago(){
		JSONObject payment_info = mercadoPagoService.obtenerPago(params?.id)
		if (Integer.parseInt (payment_info.get("status").toString()) == 200) {
			render payment_info.get("response")
		}
	}
	
	def crearPagoAprobado(){
		def pago = mercadoPagoService.crearPagoAprobado(params)
		render pago
	}
		
	def crearPagoPendiente(){
		println "crearPagoPendiente: ${params}"
		render params
	}
	
	def crearPagoFallido(){
		println "crearPagoAprobado: ${params}"
		render params
	}
	
	def ultimosPagosAprobados(){
		log.warn "ultimosPagosAprobados: ${params}"
		render mercadoPagoService.ultimosPagos("approved")
	}
	
	def ultimosPagosPendientes(){
		log.warn "ultimosPagosPendientes: ${params}"
		render mercadoPagoService.ultimosPagos("pending")
	}
	
	def ultimosPagosRechazados(){
		log.warn "ultimosPagosRechazados: ${params}"
		render mercadoPagoService.ultimosPagos("rejected")
	}
	
	def ultimosPagos(){
		log.warn "ultimosPagosRechazados: ${params}"
		render mercadoPagoService.ultimosPagos()
	}
	
}